package com.wwj.my_ummary.config;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.context.annotation.Configuration;


/**
 * @author wwj
 */
@Aspect
@Configuration
@Slf4j
public class MyAopAspectByLogDate {


    private final String ADD_POINT_CUT = "(execution(* com.wwj.my_ummary.**.controller..*.*(..)))";


    @Around(ADD_POINT_CUT)
    public Object myLogger(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        //  Object target = proceedingJoinPoint.getTarget();//目标对象

        String target = proceedingJoinPoint.getSignature().toString();
        log.info("+++++++++++++开始执行计算" + target + "方法执行时长+++++++++++++++++++");

        //前置通知（额外功能）
        long start = System.currentTimeMillis();

        //返回值就是目标方法的返回值。这个返回值哟啊被当前返回。
        //执行目标方法。放行请求。
        Object proceed = proceedingJoinPoint.proceed();

        //后置通知（额外功能）
        long time = System.currentTimeMillis() - start;
        log.info(target + "=======================这个方法执行了时长【 "+time+"毫秒 】  =====================：" );
        return proceed;
    }
}
